﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using DAL;
using BOL;
using Website.Logger;
using UtilityExtensions;
namespace UILGestion.ObraAdmin.OrdenCompras
{
    public partial class GastoObraReadForm : System.Web.UI.Page
    {


        public GastoObraReadForm()
        {
            _db = new dbGestionDataContext(Parametros.strConnString);
        }
        private dbGestionDataContext _db;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    internalid.Value = (string)Request.QueryString["id"];
                    idObra.Value = (string)Request.QueryString["idObra"];

                    menuObraCtrl1.loadMenu(int.Parse(idObra.Value), Request.AppRelativeCurrentExecutionFilePath);


                    FormatForm();
                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }

        private void readObject()
        {
            dbGestionDataContext _db =
                new dbGestionDataContext(Parametros.strConnString);

           
            //--------------------
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                idEmpleadoEmisor,
                4, //gasto de Obra
                int.Parse(idObra.Value),
                2); //lectura
            //------------------------- 
            // los paneles presentes en el formulario
            pnlMain.Visible = true;
            PanelBody.Visible = true;
            PanelButtom.Visible = true;

            //-----------------------------

            // traer las facturacion de la orden de compra
            OrdenCompraBL bl = new OrdenCompraBL();
            RecepcionDocBL recepcion = new RecepcionDocBL();

            List<RecepcionDocListInfo> listaFactura=recepcion.getDocListFromOrdenCompra(int.Parse(internalid.Value));

            documentoGridView.DataSource = listaFactura;
            documentoGridView.DataBind();

            
            var OCItem = new OrdenCompraBL().getOrdenCompraItem(DbUtil.Db,int.Parse(internalid.Value));
                

            var OC=DbUtil.Db.OrdenCompras.Single(p=>p.idInternal==internalid.Value.ToInt());

                tipoGastoLabel.Text = OC.TipoOrden.descripcion;
                numeroLabel.Text=OC.numDocumento;
                proveedorContLabel.Text=OC.contacProveedor;
               
              
                fechaLabel.Text=OC.fechaEmision.Value.ToShortDateString();
                formaPagoLabel.Text=OC.FormaPago.descripcion;
                monedaLabel.Text=OC.moneda;
                tipoCambioLabel.Text=OC.tipoCambio.ToString();
                
               
                centroCostoLabel.Text=OC.centroCosto;
                EstructuraLabel.Text=OC.idEstructuraCompras==null?"":OC.EstructuraCosto.descripcion;

                string simbol = OC.Moneda1.simbol;
                
                subTotalLabel.Text=simbol + OC.subTotal.Value.ToString("N");
                igvLabel.Text = simbol + OC.IGVTotal.Value.ToString("N");
                totalLabel.Text = simbol + OC.total.Value.ToString("N");


            if (OC.idComparativo != null)
            {
                idComparativo.Value = OC.idComparativo.ToString();
               comparativoLabel.Text = OC.Comparativo.numDocumento;
               comparativoLabel.NavigateUrl = "~/ObraAdmin/Comparativos/ComparativoReadForm.aspx?id={0}&idObra={1}".Fmt(OC.idComparativo, OC.idObra);
            }


            if (     OC.idRendicion!=null)
            {
                var gastoObra=DbUtil.Db.OrdenCompras.Single(p=>p.idInternal==int.Parse(internalid.Value));
                RendicionCHK.Visible=true;
                RendicionCHK.Text= "Rendicion CH: {0}".Fmt(gastoObra.Rendicion.numDocumento);
                RendicionCHK.NavigateUrl = "~/ObraAdmin/RendicionCaja/RendicionEditForm.aspx?id={0}&idObra={1}".Fmt(gastoObra.idRendicion, gastoObra.idObra);
            }


            EstructuraLabel.Text = (OC.idEstructuraCompras != null) ? OC.EstructuraCosto.descripcion : "";
            EstructuraLabel.NavigateUrl = (OC.idEstructuraCompras != null) ?
                "../EstructuraCompras/EstructuraCostoEditForm.aspx?idObra={0}&id={1}".Fmt(OC.idObra, OC.idEstructuraCompras) :
                "";

           
                  //---------------------- 
                DAL.Menu menu = DbUtil.Db.Menus.Single(p => p.idInternal == 112);

                    string val = String.Format("{0}?Type=A&id={1}",
                                                                menu.url,
                                                                OC.idProveedor);
                    proveedorTXT.Text = (OC.idProveedor == null) ? "" : OC.Proveedor1.descripcion;
                    proveedorTXT.NavigateUrl = "javascript:loadTabFromForm('tab{0}','{1}','{2}');".Fmt(menu.idAplicacion,
                                                                                                      menu.Aplicacion.title, val);

                    //-----------------------------                                                                                                      val1);

           

                //emisorLabel.te
                observacionLabel.Text=OC.observaciones;
              
                revisadoLabel.Text=OC.emisor;
                autorizadoLBL.Text = OC.autorizado;
                estadoLabel.Text=OC.GrupoDatoitem.descripcion;
                //fechaContratoLabel.Text = OC.fechaContrato.Value.ToShortDateString();
                fechaEntregaLabel.Text = OC.fechaPedido.Value.ToShortDateString();

            //-para las notas de ingreso

                IngresoAlmacenButton.Visible = false;
                nuevoFRLinkButton.Visible = false;
                //
                itemOrdenCompraGridView.Columns[8].Visible = false;

                //oculta el precio segun  obra
                itemOrdenCompraGridView.Columns[4].Visible = false;
                itemOrdenCompraGridView.Columns[5].Visible = false;

            if (OC.bitInclIGV.Value)
                {
                    itemOrdenCompraGridView.Columns[4].Visible = false;
                    itemOrdenCompraGridView.Columns[5].Visible = true;
                    itemOrdenCompraGridView.Columns[7].Visible = false;//subMonto
                    itemOrdenCompraGridView.Columns[8].Visible = false;//IGVItem
                    itemOrdenCompraGridView.Columns[9].Visible = true;//subMontoIGV
                }
                else
                {
                    itemOrdenCompraGridView.Columns[4].Visible = true;
                    itemOrdenCompraGridView.Columns[5].Visible = false;
                    itemOrdenCompraGridView.Columns[7].Visible = true;
                    itemOrdenCompraGridView.Columns[8].Visible = false;
                    itemOrdenCompraGridView.Columns[9].Visible = false;
                }
                 itemOrdenCompraGridView.DataSource = OCItem;
                itemOrdenCompraGridView.DataBind();
                itemUpdatePanel.Update();

                if (OC.idEstado == 11) ///emision
                {
                    aprobarBTN.Visible = true;
                    //EditarButton.Visible = true;
                }
                else
                    aprobarBTN.Visible = false;


                if (OC.idEstado == 13) //aprobado
                {
                    if (bl.EsOrdenSinRecepcion(OC.idInternal))
                    {
                        IngresoAlmacenButton.Visible = true;
                        
                        DAL.Menu menu1 = DbUtil.Db.Menus.Single(p => p.idInternal == 110);
                        string val1 = String.Format("{0}?Type=A&idOC={1}&idAlmacen={2}&idObra={3}",
                                                                        menu1.url,
                                                                        internalid.Value,
                                                                        OC.idAlmacen,
                                                                        idObra.Value);

                        IngresoAlmacenButton.NavigateUrl = "javascript:loadTabFromForm('tab{0}-{1}','{2}','{3}');".Fmt(menu1.idAplicacion,
                                                                                                                OC.idAlmacen,
                                                                                                                OC.Almacen.descripcion,
                                                                                                                val1);
                    }

                    if (bl.EsOrdenSinFacturar(OC.idInternal))
                    {
                        nuevoFRLinkButton.Visible = true;
                        nuevoFRLinkButton.PostBackUrl = String.Format("~/ObraAdmin/RecepcionDoc/RecepcionDocInsertForm.aspx?Type=A&idOC={0}&idObra={1}",
                            internalid.Value, idObra.Value);
                    }


                }

        }
        private void FormatForm()
        {


            //--------------------
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                idEmpleadoEmisor,
                4, //OrdenCompra compra
                int.Parse(idObra.Value),
                1); //lectura
            //------------------------- 
            pnlMain.Visible = true;
            PanelBody.Visible = true;
            PanelButtom.Visible = true;

            //-----------------------------


            readObject();

          
        }



        #region "Bottones"






        protected void saveButton_Click(object sender, EventArgs e)
        {
             try
            {
             string botton=((Button)sender).ID;
                 
            if (botton==nuevoButton.ID)
                Response.Redirect("GastoObraEditForm.aspx?idObra=" + idObra.Value, true);
            if (botton == aprobarBTN.ID)
            {
                OrdenCompraBL OC = new OrdenCompraBL();
                bool result = OC.updateAutorizacion(_db,int.Parse(internalid.Value));
                if (result)
                {
                    Response.Redirect("GastoObraReadForm.aspx?idObra={0}&id={1}".Fmt(idObra.Value,internalid.Value), false);
                }
            }    
            if (botton==refreshButton.ID)
                    Response.Redirect("GastoObraReadForm.aspx?idObra={0}&id={1}".Fmt(idObra.Value, internalid.Value), false);

            if (botton == EliminarButton.ID)
            {
                OrdenCompraBL OC = new OrdenCompraBL();
                bool result = OC.deleteGastoObra(_db,int.Parse(internalid.Value));
                if (result)
                {
                    Response.Redirect("GastoObraListForm.aspx?idObra=" + idObra.Value, false);
                }
            }
            if (botton == anteriorButton.ID)
            {
                int idAnterior = new OrdenCompra().getidAnterior(DbUtil.Db, int.Parse(internalid.Value), 
                    int.Parse(idObra.Value), 
                    2);

                    Response.Redirect("GastoObraReadForm.aspx?id=" + idAnterior.ToString() + "&idObra=" + idObra.Value, false);

            }
            if (botton == siguienteButton.ID)
            {
                
                int siguiente = new OrdenCompra().getidSiguiente(DbUtil.Db, 
                                                int.Parse(internalid.Value), 
                                                int.Parse(idObra.Value), 2);

                    Response.Redirect("GastoObraReadForm.aspx?id=" + siguiente.ToString() + "&idObra=" + idObra.Value, false);

            }


            }
             catch (SqlException sqlex)
             {
                 WebServerSideSqlError.Log(sqlex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                  "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


             }
             catch (Exception ex)
             {
                 WebServerSideError.Log(ex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                  "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

             }
        }
        

       
        #endregion

        


       
       
        

    }
}